home *** CD-ROM | disk | FTP | other *** search
/ MacUser Mac Bin 28 / MACUSER-MACBIN28A-1996-03.ISO.7z / MACUSER-MACBIN28A-1996-03.ISO / Demo / MachTen 4.0.2 Demo / X Window Software / X11R5 / include / Xm / TextP.h / TextP.h next >
C/C++ Source or Header  |  1995-06-30  |  13KB  |  292 lines

  1. #ifdef REV_INFO
  2. #ifndef lint
  3. static char SCCSID[] = "OSF/Motif: @(#)TextP.h    3.15 91/01/10";
  4. #endif /* lint */
  5. #endif /* REV_INFO */
  6. /******************************************************************************
  7. *******************************************************************************
  8. *
  9. *  (c) Copyright 1989, 1990, 1991 OPEN SOFTWARE FOUNDATION, INC.
  10. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
  11. *  (c) Copyright 1987, 1988, 1989, 1990, HEWLETT-PACKARD COMPANY
  12. *  ALL RIGHTS RESERVED
  13. *  
  14. *      THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED
  15. *  AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND
  16. *  WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR
  17. *  ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE
  18. *  AVAILABLE TO ANY OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF THE
  19. *  SOFTWARE IS HEREBY TRANSFERRED.
  20. *  
  21. *      THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
  22. *  NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY OPEN SOFTWARE
  23. *  FOUNDATION, INC. OR ITS THIRD PARTY SUPPLIERS  
  24. *  
  25. *      OPEN SOFTWARE FOUNDATION, INC. AND ITS THIRD PARTY SUPPLIERS,
  26. *  ASSUME NO RESPONSIBILITY FOR THE USE OR INABILITY TO USE ANY OF ITS
  27. *  SOFTWARE .   OSF SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  28. *  KIND, AND OSF EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES, INCLUDING
  29. *  BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  30. *  FITNESS FOR A PARTICULAR PURPOSE.
  31. *  
  32. *  Notice:  Notwithstanding any other lease or license that may pertain to,
  33. *  or accompany the delivery of, this computer software, the rights of the
  34. *  Government regarding its use, reproduction and disclosure are as set
  35. *  forth in Section 52.227-19 of the FARS Computer Software-Restricted
  36. *  Rights clause.
  37. *  
  38. *  (c) Copyright 1989, 1990, 1991 Open Software Foundation, Inc.  Unpublished - all
  39. *  rights reserved under the Copyright laws of the United States.
  40. *  
  41. *  RESTRICTED RIGHTS NOTICE:  Use, duplication, or disclosure by the
  42. *  Government is subject to the restrictions as set forth in subparagraph
  43. *  (c)(1)(ii) of the Rights in Technical Data and Computer Software clause
  44. *  at DFARS 52.227-7013.
  45. *  
  46. *  Open Software Foundation, Inc.
  47. *  11 Cambridge Center
  48. *  Cambridge, MA   02142
  49. *  (617)621-8700
  50. *  
  51. *  RESTRICTED RIGHTS LEGEND:  This computer software is submitted with
  52. *  "restricted rights."  Use, duplication or disclosure is subject to the
  53. *  restrictions as set forth in NASA FAR SUP 18-52.227-79 (April 1985)
  54. *  "Commercial Computer Software- Restricted Rights (April 1985)."  Open
  55. *  Software Foundation, Inc., 11 Cambridge Center, Cambridge, MA  02142.  If
  56. *  the contract contains the Clause at 18-52.227-74 "Rights in Data General"
  57. *  then the "Alternate III" clause applies.
  58. *  
  59. *  (c) Copyright 1989, 1990, 1991 Open Software Foundation, Inc.
  60. *  ALL RIGHTS RESERVED 
  61. *  
  62. *  
  63. * Open Software Foundation is a trademark of The Open Software Foundation, Inc.
  64. * OSF is a trademark of Open Software Foundation, Inc.
  65. * OSF/Motif is a trademark of Open Software Foundation, Inc.
  66. * Motif is a trademark of Open Software Foundation, Inc.
  67. * DEC is a registered trademark of Digital Equipment Corporation
  68. * DIGITAL is a registered trademark of Digital Equipment Corporation
  69. * X Window System is a trademark of the Massachusetts Institute of Technology
  70. *
  71. *******************************************************************************
  72. ******************************************************************************/
  73. #ifndef _XmTextP_h
  74. #define _XmTextP_h
  75.  
  76. #include <Xm/Text.h>
  77. #include <Xm/XmP.h>
  78.  
  79. typedef struct _InputRec *Input;
  80. typedef struct _OutputRec *Output;
  81. typedef struct _LineTableExtraRec *LineTableExtra;
  82.  
  83. #include <Xm/TextOutP.h>
  84. #include <Xm/TextSrcP.h>
  85. #include <Xm/TextInP.h>
  86. #include <Xm/StringSrcP.h>
  87. #include <Xm/CutPaste.h>
  88.  
  89. #define MAXINT    2147483647 /* Biggest number that can fit in long */
  90.  
  91. #define NODELTA        MAXINT
  92.  
  93. #define TEXTWIDGETCLASS    "Text"    /* Resource class for the text widget. */
  94.  
  95. #define GetSrc(widget)  (((XmTextWidget) (widget))->text.source)
  96.  
  97. #ifndef MIN
  98. #define MIN(x,y)    ((x) < (y) ? (x) : (y))
  99. #endif /* MIN */
  100.  
  101. /*
  102.  * This struct is for support of Insert Selection targets.
  103.  */
  104. typedef struct {
  105.     Atom selection;
  106.     Atom target;
  107. } TextInsertPair;
  108.  
  109. typedef struct {
  110.     caddr_t        extension;    /* Pointer to extension record */
  111. } XmTextClassPart;
  112.  
  113. typedef struct _XmTextClassRec {
  114.     CoreClassPart core_class;
  115.     XmPrimitiveClassPart primitive_class;
  116.     XmTextClassPart text_class;
  117. } XmTextClassRec;
  118.  
  119. externalref XmTextClassRec    xmTextClassRec;
  120.  
  121. typedef struct {
  122.     XmTextPosition start;    /* First position in this line. */
  123.     Boolean changed;        /* TRUE if something in this line changed. */
  124.     XmTextPosition changed_position; /* First position within the line that
  125.                     has changed, if any. */
  126.     Boolean past_end;        /* TRUE if this line is past the end of any */
  127.                 /* line actually on the screen. */
  128.     LineTableExtra extra;    /* Extra info the output module keeps. */
  129. } LineRec, *Line;
  130.  
  131.  
  132. typedef struct {
  133.     XmTextPosition from, to;    /* Information on one range to repaint. */
  134. } RangeRec;
  135.  
  136. typedef struct {
  137.     Cardinal number;        /* Number of ranges defined. */
  138.     Cardinal maximum;        /* Number of ranges we have space for. */
  139.     RangeRec *range;        /* Pointer to array of ranges. */
  140. } Ranges;
  141.  
  142.  
  143. typedef struct {
  144.     XmTextPosition position;    /* Starting position. */
  145.     XmHighlightMode mode;        /* Highlighting mode for this position. */
  146. } HighlightRec;
  147.  
  148. typedef struct {
  149.     Cardinal number;        /* Number of different highlight areas. */
  150.     Cardinal maximum;        /* Number we've allocated space for. */
  151.     HighlightRec *list;        /* Pointer to array of highlight data. */
  152. } HighlightData;
  153.  
  154. /*
  155.  * Structure for main text info. 
  156.  */
  157.  
  158. typedef struct _XmTextPart {
  159.     XmTextSource source;           /* The source for this widget. */
  160.     XtCallbackProc activate_callback;      /* command activate callback. */
  161.     XtCallbackProc focus_callback;       /* Focus callback. */
  162.     XtCallbackProc losing_focus_callback;  /* Losing focus callback. */
  163.     XtCallbackProc value_changed_callback; /* Value changed callback. */
  164.     XtCallbackProc modify_verify_callback; /* Verify value to change callback.*/
  165.     XtCallbackProc motion_verify_callback; /* Insert cursor position 
  166.                           change callback. */
  167.     XtCallbackProc gain_primary_callback; /* Gained ownership of Primary
  168.                          Selection */
  169.     XtCallbackProc lose_primary_callback; /* Lost ownership of Primary
  170.                          Selection */
  171.     char *value;            /* The sring value in the widget */
  172.     int max_length;            /* Sets the max. length of string */
  173.     Dimension margin_height;        /* height between text borders and text */
  174.     Dimension margin_width;         /* width between text borders and text */
  175.     OutputCreateProc output_create; /* Routine to create the output portion. */
  176.     InputCreateProc input_create;   /* Routine to create the input portion. */
  177.     /* The naming incongruity amongst the next three items was introduced */
  178.     /* due to a collision with top_position as used as a Form constraint; */
  179.     /* It has no other implications. */
  180.     XmTextPosition top_character;    /* First position to display. */
  181.     XmTextPosition bottom_position; /* Last position to display. */
  182.     XmTextPosition cursor_position; /* Location of the insertion point. */
  183.     int edit_mode;            /* Sets the line editing mode
  184.                        (i.e. sinlge_line, multi_line, ...) */
  185.     Boolean auto_show_cursor_position; /* If true, automatically try to show
  186.                       the cursor position whenever it
  187.                       changes. */
  188.     Boolean editable;          /* Determines if text is editable */
  189.     Boolean verify_bell;       /* Determines if bell is sounded when verify
  190.                    *  callback returns doit - False
  191.                                    */
  192.     Boolean add_mode;          /* Determines the state of add moder */
  193.     Boolean traversed;            /* Flag used with losing focus verification to
  194.                      indicate a traversal key pressed event */
  195.     Boolean in_redisplay;      /* Whether currently in the redisplay proc. */
  196.     Boolean needs_redisplay;      /* Whether we need to repaint or refigure. */
  197.     Boolean in_refigure_lines;      /* Whether currently in refigurelines proc. */
  198.     Boolean needs_refigure_lines; /* Whether we need to refigure. */
  199.     Boolean in_resize;          /* Make sure there are no geometry requsets
  200.                      while we are in resize procedure. */
  201.     Boolean highlight_changed;      /* Whether highlighting recently changed. */
  202.     Boolean pendingoff;         /* TRUE if we shouldn't do pending delete on
  203.                                    the current selection. */
  204.  
  205.     OnOrOff on_or_off;          /* Whether insertion point is currently on. */
  206.  
  207.     Output output;           /* The output portion. */
  208.     Input input;           /* The input portion. */
  209.  
  210.     XmTextPosition first_position; /* First legal position in the source. */
  211.     XmTextPosition last_position;  /* Last legal position in the source. */
  212.     XmTextPosition forget_past;       /* Forget all about positions past this. */
  213.     XmTextPosition force_display;  /* Force this position to be displayed. */
  214.     XmTextPosition new_top;       /* Desired new top position. */
  215.     XmTextPosition last_top_char;  /* Last top position that was displayed. */
  216.     XmTextPosition dest_position;  /* Location of the destination point. */
  217.     int disable_depth;           /* How many levels of disable we've done. */
  218.  
  219.     int pending_scroll;        /* Number of lines we want to scroll. */
  220.     int total_lines;        /* Total number of lines in the text widget */
  221.     int top_line;        /* Line number of the top visible line */
  222.     int vsbar_scrolling;    /* scrolling using the vertical scrollbar */
  223.  
  224.     Cardinal number_lines;    /* Number of line table entries. */
  225.     Cardinal maximum_lines;    /* Maximum number of line table entries. */
  226.     Line line;            /* Pointer to array of line table entries. */
  227.  
  228.     Ranges repaint;        /* Info on the repaint ranges. */
  229.     HighlightData highlight;    /* Info on the highlighting regions. */
  230.     HighlightData old_highlight;/* Old value of above. */
  231.     Widget inner_widget;    /* Pointer to widget which actually contains
  232.                    text (may be same or different from
  233.                    this record).  */
  234. } XmTextPart;
  235.  
  236. typedef struct _XmTextRec {
  237.     CorePart    core;
  238.     XmPrimitivePart primitive;
  239.     XmTextPart text;
  240. } XmTextRec;
  241.  
  242. /* Semi-Public functions for internal text use only. */
  243.  
  244. #ifdef _NO_PROTO
  245. extern int _XmTextGetBaseLine();
  246. extern void _XmTextMarkRedraw ();
  247. extern LineNum _XmTextNumLines ();
  248. extern void _XmTextLineInfo ();
  249. extern LineNum _XmTextPosToLine ();
  250. extern void _XmTextInvalidate ();
  251. extern void _XmTextDisableRedisplay ();
  252. extern void _XmTextEnableRedisplay ();
  253. extern Boolean _XmTextShouldWordWrap ();
  254. extern Boolean _XmTextScrollable ();
  255. extern Boolean _XmTextSetDestination ();
  256. extern XmTextPosition _XmTextGetAnchor ();
  257. extern void _XmTextOutputCreate ();
  258. extern void _XmTextInputCreate ();
  259. extern void _XmTextChangeHOffset ();
  260. extern void _XmTextDrawDestination();
  261. extern void _XmTextClearDestination();
  262. extern void _XmTextDestinationVisible();
  263. extern void _XmTextSetCursorPosition();
  264. extern XmTextPosition _XmTextFindScroll();
  265. extern void _XmTextChangeBlinkBehavior();
  266. #else /* _NO_PROTO */
  267. extern int _XmTextGetBaseLine(XmTextWidget widget);
  268. extern void _XmTextMarkRedraw (XmTextWidget widget, XmTextPosition left, XmTextPosition right);
  269. extern LineNum _XmTextNumLines (XmTextWidget widget);
  270. extern void _XmTextLineInfo (XmTextWidget widget, LineNum line, XmTextPosition *startpos, LineTableExtra *extra);
  271. extern LineNum _XmTextPosToLine (XmTextWidget widget, XmTextPosition position);
  272. extern void _XmTextInvalidate (XmTextWidget widget, XmTextPosition position, XmTextPosition topos, long delta);
  273. extern void _XmTextDisableRedisplay (XmTextWidget widget, Boolean losesbackingstore);
  274. extern void _XmTextEnableRedisplay (XmTextWidget widget);
  275. extern Boolean _XmTextShouldWordWrap (XmTextWidget widget);
  276. extern Boolean _XmTextScrollable (XmTextWidget widget);
  277. extern Boolean _XmTextSetDestination (Widget widget, XmTextPosition position, Boolean disown, Time set_time);
  278. extern XmTextPosition _XmTextGetAnchor (XmTextWidget widget);
  279. extern void _XmTextOutputCreate (XmTextWidget widget, ArgList args, Cardinal num_args);
  280. extern void _XmTextInputCreate (XmTextWidget widget, ArgList args, Cardinal num_args);
  281. extern void _XmTextChangeHOffset (XmTextWidget widget, int length);
  282. extern void _XmTextDrawDestination(XmTextWidget widget);
  283. extern void _XmTextClearDestination(XmTextWidget widget, Boolean ignore_sens);
  284. extern void _XmTextDestinationVisible(Widget w, Boolean turn_on);
  285. extern void _XmTextSetCursorPosition(Widget w, XmTextPosition position);
  286. extern XmTextPosition _XmTextFindScroll (XmTextWidget widget, XmTextPosition start, int delta);
  287. extern void _XmTextChangeBlinkBehavior(XmTextWidget widget, Boolean newvalue);
  288. #endif /* _NO_PROTO */
  289.  
  290. #endif /* _XmnextP_h */
  291. /* DON't ADD STUFF AFTER THIS #endif */
  292.